const requireDirectory = require('require-directory');
const Router = require('koa-router')

class InitManager{
  static initCore(app) {
    // 入口方法
    InitManager.app = app
    InitManager.initLoadRouters()
  }

  static initLoadRouters() {
    // 自动加载文件夹的所有路由, visit接受一个函数-->是一个路由的时候才出发这个函数
    // path config 使用绝对路径
    const apiDirectory = `${process.cwd()}/app/api`
    requireDirectory(module, apiDirectory, {
      visit: whenLoadModule
    })
    function whenLoadModule(obj) {
      if(obj instanceof Router) {
        InitManager.app.use(obj.routes())
      }
    }
  }
  static loadHttpException() {
    global.errs = require('./http-exception')
  }
  static loadConfig (path = '') {
    const configPath = path || process.cwd() + '/config/config.js'
    const config = require(configPath)
    global.config = config
  }
}


module.exports = InitManager